<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

/**
 * ApplicationObject Model
 */
class BeModelApplicationObject extends BeModel {

	/**
	 * erzeugt einen Objekt-Baum (flach oder Baumstruktur) aus allen eingetragenen Objekten
	 * @var array
	 */
	protected $_tree = array();

	/**
	 * Findet alle Objekte, die auf die Optionen zutreffen
	 * @param array $options Array mit definierten Optionen, um die Suche einzugrenzen
	 * @return array Array mit den Objekten der Planeten
	 */
	public function findall($options = array(), $select = array(), $ordering = array(), $limit = null) {
		$input	=	&JFilterInput::getInstance();
		$return	= array();
    $query	= $this->_db->getQuery(true)
			->select('ao.*')
			->select('so.id AS system, so.name')
			->from('#__be_application_objects AS ao');

		// -----------------------------------------------------------------------------------
		// Verbindung mit SystemPlanet
		$query->join('left', '#__be_system_objects AS so ON ao.system = so.id');

		// -----------------------------------------------------------------------------------
		// Uid
		if(isset($options['id']) !== false) {
			if(is_array($options['id']) === false) {
				$options['id'] = array((int) $options['id']);
			}

			$query->where('ap.id IN (' . implode(',', $input->clean($options['id'], null)) . ')');
		}

		// -----------------------------------------------------------------------------------
		// Match-Id
		if(isset($options['colony']) !== false) {
			$query->where('ao.colony = ' . (int) $options['colony']);
		}

    $this->_db->setQuery($query);
    if(($rows = $this->_db->loadObjectList()) !== false) {
			foreach($rows as $row) {
				$table = $this->getTable();
				$table->bind($row);

				$return[(int) $row->id] = $table;
			}
    }

		return $return;
	}

	/**
	 * Sucht nach allen Kindelementen, die auf dass Elternelement zutreffen
	 * @params $options Optionen, wie die Liste zusammengestellt werden soll
	 * @return array den Objekten
	 */
	public function findallChild($options = array()) {


		// diese Funktion solle als createTree oder sowas abgespeichert werden
		$query	= $this->_db->getQuery(true)
			->select('so.id, so.parent')
			->from('#__be_system_objects AS so');
    $this->_db->setQuery($query);

    if(($data = $this->_db->loadObjectList()) !== false) {
			foreach($data as $object) {

				if(empty($object->parent) === false) {
					if(isset($this->_tree[(int) $object->parent]) === false) {
						$this->_tree[(int) $object->parent] = array();
					}

					$this->_tree[(int) $object->parent][(int) $object->id] = (int) $object->id;
				}
			}
		}

		print_r($this->_tree);
	}
}
?>